home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / lists / mint / l_1599 / 1367 < prev    next >
Encoding:
Internet Message Format  |  1994-08-27  |  2.1 KB

  1. From: Ulrich Kuehn <kuehn@GOEDEL.UNI-MUENSTER.DE>
  2. Subject: Patch for seteuid/setegid
  3. Date: Mon, 09 May 1994 10:43:52 +0200
  4.  
  5. Hello!
  6.  
  7. Here is a patch that implements Pseteuid()/Psetegid(), which are needed
  8. for an nfs daemon to do access checking (and probably for a lot of other
  9. things). So I would like this patch making its way into the next release
  10. of mint.
  11.  
  12. diff -ur old/dos.c ./dos.c
  13. --- old/dos.c    Fri May  6 23:46:04 1994
  14. +++ ./dos.c    Sat May  7 00:02:34 1994
  15. @@ -208,6 +208,31 @@
  16.      return EACCDN;
  17.  }
  18.  
  19. +
  20. +/* uk: set effective uid/gid but leave the real uid/gid unchanged. */
  21. +long ARGS_ON_STACK
  22. +p_seteuid(id)
  23. +    int id;
  24. +{
  25. +    if (curproc->euid == 0 || curproc->ruid    == id) {
  26. +        curproc->euid = id;
  27. +        return id;
  28. +    }
  29. +    return EACCDN;
  30. +}
  31. +    
  32. +long ARGS_ON_STACK
  33. +p_setegid(id)
  34. +    int id;
  35. +{
  36. +    if (curproc->euid == 0 || curproc->egid == 0 || curproc->rgid == id) {
  37. +        curproc->egid = id;
  38. +        return id;
  39. +    }
  40. +    return EACCDN;
  41. +}
  42. +
  43. +
  44.  /*
  45.   * a way to get/set process-specific user information. the user information
  46.   * longword is set to "arg", unless arg is -1. In any case, the old
  47. @@ -623,4 +648,6 @@
  48.      dos_tab[0x13e] = p_sigintr;
  49.      dos_tab[0x13f] = s_uptime;
  50.      dos_tab[0x142] = d_xreaddir;
  51. +    dos_tab[0x143] = p_seteuid;
  52. +    dos_tab[0x144] = p_setegid;
  53.  }
  54. diff -ur old/proto.h ./proto.h
  55. --- old/proto.h    Fri May  6 23:55:06 1994
  56. +++ ./proto.h    Fri May  6 23:56:02 1994
  57. @@ -78,6 +78,8 @@
  58.  long ARGS_ON_STACK p_getegid P_((void));
  59.  long ARGS_ON_STACK p_setuid P_((int id));
  60.  long ARGS_ON_STACK p_setgid P_((int id));
  61. +long ARGS_ON_STACK p_seteuid P_((int id));
  62. +long ARGS_ON_STACK p_setegid P_((int id));
  63.  long ARGS_ON_STACK p_usrval P_((long arg));
  64.  long ARGS_ON_STACK p_umask P_((unsigned mode));
  65.  long ARGS_ON_STACK p_domain P_((int arg));
  66.  
  67. Regards,
  68. Ulrich
  69.  
  70. p.s.: Thorsten, sorry, but I think You have to choose some other function
  71.       numbers for Your patch :)
  72.  
  73. --
  74. +---------------+----------------------------+-----------------------+
  75. | Ulrich Kuehn  | Internet:                  | Life is uncertain --  |
  76. | Cand.Math.Inf | kuehn@math.uni-muenster.de | eat the dessert first |
  77. +---------------+----------------------------+-----------------------+
  78.